package config

import (
	"os"
)

// LogConfig 日志设置
type LogConfig struct {
	Dir        string `json:"dir"`
	FileLength int64  `json:"filelength"`
	FileLevel  int    `json:"filelevel"`
}

// RsaConfig Rsa配置
type RsaConfig struct {
	Bits        int    `json:"bits"`
	PrivatePath string `json:"private"`
	PublicPath  string `json:"public"`
}

// DBConfig 关系数据库设置
type DBConfig struct {
	Drive   string `json:"drive"` // mysql
	Charset string `json:"charset"`
	DBBase
}

// NoSQLDBConfig 非关系数据库配置
type NoSQLDBConfig struct {
	Net string `json:"Net,omitempty"`
	DBBase
}

// DBBase 数据库基本配置
type DBBase struct {
	Addr   string `json:"ip"`
	Port   string `json:"port"`
	User   string `json:"user"`
	Pass   string `json:"pass"`
	DBName string `json:"dbname"`
}

type InfluxDBConf struct {
	Url   string `json:"url"`
	Token string `json:"token"`
	// Bucket string `json:"bucket"`
	// Org    string `json:"org"`
}

// // GoexAccountConf 账户设置
// type GoexAccountConf struct {
// 	ID           string `json:"id"`
// 	Type         string `json:"type"` // main or sub
// 	APIKey       string `json:"api_key"`
// 	APISecretKey string `json:"api_secret_key"`
// }

// // Fee 费率结构
// type Fee struct {
// 	Exchange string  `json:"exchange"`
// 	Taker    float64 `json:"taker"`
// 	Maker    float64 `json:"maker"`
// }

// // InitFromGoexFee 从goex的Fee初始化
// func (f *Fee) InitFromGoexFee(exchange string, fee goex.Fee) {
// 	f.Exchange = exchange
// 	f.Taker = fee.Taker
// 	f.Maker = fee.Maker
// }

// // GoexConf Goex配置
// type GoexConf struct {
// 	Proxy            string                        `json:"proxy,omitempty"`
// 	Mode             string                        `json:"mode,omitempty"` // test or anything else
// 	CacheDayCount    int64                         `json:"cache_day_count"`
// 	Accounts         map[string][]*GoexAccountConf `json:"accounts"`
// 	Fee              map[string]Fee                `json:"fee"`
// 	MainCoins        []string                      `json:"main_coins"`
// 	BaseCoin         string                        `json:"base_coin"`
// 	TestAsset        map[string]float64            `json:"test_asset"`
// 	TestAccountCount int                           `json:"test_account_count"`
// 	TestExchanges    []string                      `json:"test_exchanges"`
// 	ThreadCount      int                           `json:"thread_count"`
// }

// // GoexArgs Goex的RPC服务通用参数结构
// type GoexArgs struct {
// 	Exchange     string
// 	Pair         goex.CurrencyPair
// 	IsFuture     bool
// 	ContractType string
// }

// FileFromPath 通过路径获取文件
func FileFromPath(path interface{}, defaultPath string) (*os.File, error) {

	var file *os.File
	var err error
	switch path.(type) {
	case string:
		_, err = os.Stat(path.(string))
		if err == nil {
			file, err = os.Open(path.(string))
		} else {
			file, err = os.Open(defaultPath)
		}
	default:
		file, err = os.Open(defaultPath)
	}
	return file, err
}
